package net.cyue.ort.llm.generator;

/**
 * 文本生成器接口
 * 负责文本生成的核心逻辑
 * 遵循接口隔离原则，专注于生成功能
 */
public interface TextGenerator {
    /**
     * 生成文本
     * @param prompt 输入提示
     * @param config 生成配置
     * @param callback 回调接口（可为null）
     * @return 生成的文本
     */
    String generate(String prompt, GenerationConfig config, GenerationCallback callback);
    
    /**
     * 流式生成文本（可选实现）
     * @param prompt 输入提示
     * @param config 生成配置
     * @return 流式文本
     */
    default java.util.stream.Stream<String> stream(String prompt, GenerationConfig config) {
        // 默认实现：将generate的结果转换为流
        StringBuilder buffer = new StringBuilder();
        GenerationCallback callback = new GenerationCallback() {
            @Override
            public void onTokenGenerated(String token) {
                buffer.append(token);
            }
            
            @Override
            public void onComplete(String fullText) {
                // 已完成
            }
            
            @Override
            public void onError(Exception e) {
                // 忽略错误
            }
        };
        String result = generate(prompt, config, callback);
        return java.util.stream.Stream.of(result);
    }
}

